<%@page import="javax.persistence.EntityManager"%>
<%@page import="multiface.awwadco.jpa.PersistenceManager"%>
<%@page import="javax.persistence.EntityManagerFactory"%>
<%@page import="multiface.awwadco.jpa.Prodotto"%>
<%@page import="java.util.Iterator"%>
<%@page import="multiface.web.util.categories.AlberoCategorieRicambi"%>
<%@page import="multiface.awwadco.jpa.Categoria"%>
<%@page import="java.util.List"%>
<%
    AlberoCategorieRicambi tree = new AlberoCategorieRicambi();

    /*if (session.getAttribute("albero_categorie_ricambi") == null) {
     tree.caricaDaDB();
     session.setAttribute("albero_categorie_ricambi", tree);
     } else {
     tree = (AlberoCategorieRicambi) session.getAttribute("albero_categorie_ricambi");
     }*/


    EntityManagerFactory emf = PersistenceManager.getInstance().getEntityManagerFactory();
    EntityManager em = emf.createEntityManager();

    Prodotto prod = em.find(Prodotto.class, Integer.parseInt(request.getParameter("pid")));
    em.close();
    if (prod == null) {
%>
<div class="error">The product does not exist!!!</div> 
<%
} else {

%>
<div class="box">
    <div class="title">Parts Categories</div>
    <ul class="tree">
        <%

            List<Categoria> lcat = tree.categorieInOrdineDiProfondita();
            Iterator it = lcat.iterator();
            int sc = -1;
            int csc = 0;
            int p = 0;
            int[] arrpos = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};


            while (it.hasNext()) {
                Categoria c = (Categoria) it.next();
                String classe = "ul_close";
                boolean parenti = tree.Parentela(c.getIdcategoria(), prod.getCategoriaIdcategoria().getIdcategoria());
                if (parenti) {
                    ////System.out.println(c.getNome() + " parente con " + prod.getCategoriaIdcategoria().getNome());
                    classe = "ul_open";
                }

                if (c.getSopracategoria() > sc) {
                    // entro in una sottocategoria
                    csc++;
                    p++;
                    sc = c.getSopracategoria();
                    //
                    out.println("<ul id=\"sottoli_" + sc + "\" class=\"" + classe + "\">");
                }
                if (c.getSopracategoria() < sc) {
                    //esco da una sottocategoira
                    int h = tree.Altezza(c);
                    //Sy_stem.out.println("[h=" + h + "]");
                    int m = (p - h) + 1;
                    for (int i = 0; i < m; i++) {
                        arrpos[p] = 0;
                        p--;
                        sc = c.getSopracategoria();
                        out.println("</ul>");
                    }
                }

                arrpos[p] = arrpos[p] + 1;
                String pre = "";
                for (int i = 0; i < p + 1; i++) {
                    pre += (arrpos[i] + "");
                    if (i < p) {
                        pre += ".";
                    }
                }

                if (parenti || p == 0) {
                    classe = "ul_open";
                } else {
                    classe = "ul_close";
                }

                if (c.getIdcategoria() == prod.getCategoriaIdcategoria().getIdcategoria() || tree.Discendenza(c.getIdcategoria(), prod.getCategoriaIdcategoria().getIdcategoria())) {
                    classe += " selected";
                }


        %>
        <li level="<%=p%>" class="<%=classe%>" id="li_<%=c.getIdcategoria()%>">
            <a href="javascript:open('cat_parts.jsp',{cid:<%=c.getIdcategoria()%>,level:<%=p%>});"><%=c.getNome()%></a>
        </li>
        <%
            }
        %>
    </ul>
</div>
<jsp:include flush="true" page="search_parts.jsp"></jsp:include>